iT邦幫忙

2024 iThome 鐵人賽

DAY 1
1
Python

Python x OpenCV系列 第 1

[Day 01] 認識OpenCV環境與讀取圖片

  • 分享至 

  • xImage
  •  

我將會透過這30天的iThome鐵人賽,手把手帶領大家認試OpenCV的各種功能與應用。前半段會著重於OpenCV的功能介紹,會帶一些有趣的小例子,程式碼皆會附在文章中;後半段會帶實戰應用,會完成車牌辨識與眼球追蹤專案。

這次的教學皆以Python為主要的程式語言,因為OpenCV目前主流的語言還是以Python為主,且Python比較容易上手,Python的基礎語法教學就不在這系列提及了,此主題主要著重於OpenCV的應用。希望各位IT朋友能在讀完文章後有所收穫!

什麼是OpenCV?

OpenCV的全名是Open Source Computer Vision Library(開源計算機視覺函式庫),由 Intel 公司在1999年首次推出,並且在2000年正式發布。OpenCV 提供了數百個用於影像處理和電腦視覺的演算法,是目前發展最完整的電腦視覺開源資源。

OpenCV 支援多種程式語言,包括 C++、Python 和 Java,也可以在多種作業系統上運行,如 Windows、Linux 和 macOS。此外,它還支援各種硬體加速,如 GPU 和 FPGA,以提高計算效率。
OpenCV_Logo

安裝OpenCV

以下是針對常見操作系統和 Python 程式語言的安裝步驟。

小提醒:
確保已先安裝Python和pip

在命令行(cmd)或終端(terminal)輸入以下指令確認是否安裝Python以及pip

python --version
pip --version

跳出以下訊息代表已安裝Python以及pip
https://ithelp.ithome.com.tw/upload/images/20240915/20168060Z1Iihn5Mcx.png

在 Windows、macOS 和 Linux 上安裝 OpenCV for Python

在命令行(cmd)或終端(terminal)下命令來安裝OpenCV

pip install opencv-python

此時需等待一下,安裝好後開啟一個新的.py檔並輸入已下指令。若沒有跳出錯誤訊息且成功印出OpenCV的版本代表安裝成功。

import cv2
print(cv2.__version__)

OpenCV的"Hello world":讀取與顯示圖片

將以lenna.jpg為範例。

注意:
需先將欲讀取的圖片與此python程式放到同一路徑底下。

import cv2

# 讀取圖片
image = cv2.imread('lenna.jpg')

# 顯示圖片
cv2.imshow('lenna', image)

# 等待任意按鍵按下,然後關閉顯示窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

此時會跳出以下視窗,代表成功讀取第一張圖片了!
https://ithelp.ithome.com.tw/upload/images/20240915/20168060fQIFQ09zNh.png

程式碼解釋

[ ] 內為optional,可以不填

  1. cv2.imread(文件路徑與名稱[, 讀取方式])
  • 文件路徑與名稱
    • 可輸入相對路徑與絕對路徑,只要是圖片格式(參考:OpenCV官方說明)都能讀取。
  • 讀取方式
    • 支援13種色彩模式,可輸入數字或是模式。參考:OpenCV官方說明
    • 其中最常用的為前3個,色彩模式將於下一篇詳細說明。
數字 模式 說明
1 cv2.IMREAD_UNCHANGED 原本的圖像( 如果圖像有 alpha 通道則會包含 )。
2 cv2.IMREAD_GRAYSCALE 灰階圖像。
3 cv2.IMREAD_COLOR BGR 彩色圖像,預設。
4 cv2.IMREAD_ANYDEPTH 具有對應的深度時返回 16/32 位元圖像,否則將其轉換為 8 位元圖像。
5 cv2.IMREAD_ANYCOLOR 以任何可能的顏色格式讀取圖像。
6 cv2.IMREAD_LOAD_GDAL 使用 gdal 驅動程式加載圖像。
7 cv2.IMREAD_REDUCED_GRAYSCALE_2 灰階圖像,圖像尺寸減小 1/2。
8 cv2.IMREAD_REDUCED_COLOR_2 BGR 彩色圖像,圖像尺寸減小 1/2。
9 cv2.IMREAD_REDUCED_GRAYSCALE_4 灰階圖像,圖像尺寸縮小 1/4。
10 cv2.IMREAD_REDUCED_COLOR_4 BGR 彩色圖像,圖像尺寸減小 1/4。
11 cv2.IMREAD_REDUCED_GRAYSCALE_8 灰階圖像,圖像尺寸縮小 1/8。
12 cv2.IMREAD_REDUCED_COLOR_8 BGR 彩色圖像,圖像尺寸減小 1/8。
13 cv2.IMREAD_IGNORE_ORIENTATION 不要根據 EXIF 資訊的方向標誌旋轉圖像。
  • cv2.imshow(視窗名稱, 圖片)
    • 視窗名稱: 彈出新視窗的名稱,字串型別,此範例為lenna
    • 圖片: 要顯示出來的圖片。
  • cv2.waitKey(0)
    • 等待鍵盤上的任意鍵,0表示無限等待。
  • cv2.destroyAllWindows
    • 關閉所有由cv2.imshow()創建的視窗。

今天的分享就到這邊,明天會解釋色彩模式、numpy操作與切割圖片的方法。


下一篇
[Day 02] 色彩模式與顏色偵測
系列文
Python x OpenCV5
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言